#include<thread>
#include<iostream>
#include<unistd.h>
#include<mutex>
using namespace std;















// mutex _mutex1;
// mutex _mutex2;
// void Func1(){
//     lock(_mutex1,_mutex2);
//     // _mutex1.lock();
//     // _mutex2.lock();
//     //.......其他操作

//     _mutex1.unlock();
//     _mutex2.unlock();
// }

// void Func2(){
//     lock(_mutex1,_mutex2);
//     // _mutex2.lock();
//     // _mutex1.lock();

//     //.......其他操作

//     _mutex2.unlock();
//     _mutex1.unlock();
// }
// int main(){

//     mutex _mutex;
// 	thread _thread1(Func1);
//     thread _thread2(Func2);
// 	_thread1.join();
//     _thread2.join();
// }


// int n=0;
// void Func(mutex&_mutex){

//     lock_guard<mutex> lock(_mutex);//这样会对整个线程函数加锁

//     {
//         lock_guard<mutex> lock(_mutex);//这样只对for循环加锁
//         for(int i=0;i<5;i++){
//            n++;
//            sleep(1);
//         }
//     }

//     cout<<"这句代码不需要加锁"<<endl;
// }


// int main(){
//     mutex _mutex;
// 	thread _thread(Func,ref(_mutex));
// 	_thread.join();
// }